package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.TaskInfo;

/**
 * 任务信息 服务层
 */
public interface ITaskInfoService
{
    /**
     * 查询任务信息列表
     */
    public List<TaskInfo> selectTaskInfoList(TaskInfo taskInfo, Long userId);

    /**
     * 查询任务信息
     */
    public TaskInfo selectTaskInfoById(Long taskId, Long userId);

    /**
     * 新增任务信息
     */
    public int insertTaskInfo(TaskInfo taskInfo);

    /**
     * 修改任务信息
     */
    public int updateTaskInfo(TaskInfo taskInfo);

    /**
     * 批量删除任务信息
     */
    public int deleteTaskInfoByIds(Long[] taskIds);

    /**
     * 根据状态查询任务
     */
    public List<TaskInfo> selectTaskInfoByStatus(Integer status);

    /**
     * 查询用户收藏的任务列表
     * @param userId 用户ID
     * @return 任务信息集合
     */
    public List<TaskInfo> selectStarTaskListByUserId(Long userId);

    /**
     * 根据任务ID列表批量查询任务详情
     * @param taskIds 任务ID列表
     * @return 任务信息集合
     */
    public List<TaskInfo> selectTaskInfoListByIds(List<Long> taskIds);

    /**
     * 根据用户ID统计任务数量
     *
     * @param userId 用户ID
     * @return 任务数量
     */
    public int selectTaskInfoCountByUserId(Long userId);

    /**
     * 获取用户相关的任务统计信息
     *
     * @param userId 用户ID
     * @return 统计结果
     */
    public java.util.Map<String, Object> getUserStats(Long userId);

    /**
     * 查询关注用户发布的任务列表
     * @param userId 当前用户ID
     * @return 任务列表
     */
    public List<TaskInfo> selectTasksFromFollowedUsers(Long userId);
}